package 多态.多态应用场景;

public class Test {
    public static void main(String[] args) {
        //测试Dog类
        Cat c=new Cat();
        c.setName("咖啡猫");
        showAnimal(c);
        System.out.println("--------------------");
        //测试Mouse类
        Mouse m=new Mouse();
        m.setName("杰瑞");
        showAnimal(m);
        System.out.println("--------------------");


    }
    /*
        static: 1.静态;
                2.用在方法中，则这个成员方法为静态方法;
                3.没加”static“，则为普通方法
                4.静态方法只能调用静态方法，普通方法可以调用静态方法
                5.方法与方法之间是平级关系，不能互相嵌套
     */
    public static void showAnimal(Cat c){//定义一个以类作为形参的成员方法，且参数只能是Cat类的某个对象，否则会报错
        c.eat();
    }
    public static void showAnimal(Mouse m){//同上
        m.eat();
    }
    /*
        上述测试类中，有两个“showAnimal()”成员方法，作用有所局限。
        若再追加几个子类用来测试，则需要再重复的写大量的”showAnimal()“方法，以便测试。
        因此极为不便，故改进如下：
        public static void showAnimal(Animal a){
            a.eat();//定义一个以父类作为形参的成员方法，则参数只能是父类与子类的某个对象，否则会报错
        }
        --------------------------------
        注：
            c.eat();
            m.eat();
            这种方法相当于，以类作为形参的成员方法的简化方法。
     */
}
